/**
 * 
 */
package com.proyecto.histoclin.modelo.validacion;

import com.proyecto.core.Utilidades.ObtenerFecha;
import com.proyecto.core.modelo.excepciones.GeneralException;
import com.proyecto.core.modelo.validacion.IValidacionServicio;
import com.proyecto.histoclin.modelo.constantes.ConstantesHistoriasClinicas;
import com.proyecto.histoclin.modelo.dto.HistoclinRemisiones;
import com.proyecto.histoclin.modelo.dto.HistoclinRemisionesId;

/**
 * @author vico
 *
 */
public class ValidacionServicioHistoclinRemisiones implements
		IValidacionServicio {

	/**
	 * 
	 */
	public ValidacionServicioHistoclinRemisiones() {
		// TODO Auto-generated constructor stub
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#buscarCatalogoPorPropiedad(java.lang.String, java.lang.String)
	 */
	public void buscarCatalogoPorPropiedad(String atributo, String valor)
			throws GeneralException {
		// TODO Auto-generated method stub
		if (atributo == null || valor == null || atributo.equals("")
				|| valor.equals("")) {
			throw new GeneralException(
				"error.HistoriasClinicas.datosEspecificos.HistoclinRemisiones.buscarCatalogoXPropiedad.parametrosInvalidos");
		}
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#consultar(java.lang.Object)
	 */
	public void consultar(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		HistoclinRemisionesId objHistoclinRemisionesId = (HistoclinRemisionesId) o;
		if (objHistoclinRemisionesId == null || objHistoclinRemisionesId.getCiaopr() == null
				|| objHistoclinRemisionesId.getCiaopr().trim().equals("")
				|| objHistoclinRemisionesId.getHisclicod() == null
				|| objHistoclinRemisionesId.getHisclicod().equals("")
				|| objHistoclinRemisionesId.getRemicioncod() == null
				|| objHistoclinRemisionesId.getRemicioncod().equals("")
				) {
			throw new GeneralException(
					"error.HistoriasClinicas.datosEspecificos.HistoclinRemisiones.consulta.pkNull");
		}
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#consultarTodos(java.lang.Object)
	 */
	public void consultarTodos(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		if (o == null) {
			throw new GeneralException(
					"error.HistoriasClinicas.datosEspecificos.HistoclinRemisiones.consulta.pkNull");
		}
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#eliminar(java.lang.Object)
	 */
	public void eliminar(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		HistoclinRemisiones objHistoclinRemisiones = (HistoclinRemisiones) o;
		if (objHistoclinRemisiones == null || objHistoclinRemisiones.getId().getCiaopr() == null
				|| objHistoclinRemisiones.getId().getCiaopr().trim().equals("")
				|| objHistoclinRemisiones.getId().getHisclicod() == null
				|| objHistoclinRemisiones.getId().getHisclicod().equals("")
				|| objHistoclinRemisiones.getId().getRemicioncod() == null
				|| objHistoclinRemisiones.getId().getRemicioncod().equals("")) {
			throw new GeneralException(
					"error.HistoriasClinicas.datosEspecificos.HistoclinRemisiones.eliminar.pkNull");
		}
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#incluir(java.lang.Object)
	 */
	public void incluir(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		HistoclinRemisiones objHistoclinRemisiones = (HistoclinRemisiones) o;
		if (objHistoclinRemisiones == null || objHistoclinRemisiones.getId().getCiaopr() == null
				|| objHistoclinRemisiones.getId().getCiaopr().trim().equals("")) {
			throw new GeneralException(
					"error.HistoriasClinicas.datosEspecificos.HistoclinRemisiones.incluir.pkNull");
		} 
		this.validaCampos(objHistoclinRemisiones,true);
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#modificar(java.lang.Object)
	 */
	public void modificar(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		HistoclinRemisiones objHistoclinRemisiones = (HistoclinRemisiones) o;
		if (objHistoclinRemisiones == null || objHistoclinRemisiones.getId().getCiaopr() == null
				|| objHistoclinRemisiones.getId().getCiaopr().trim().equals("")
				|| objHistoclinRemisiones.getId().getHisclicod() == null
				|| objHistoclinRemisiones.getId().getHisclicod().equals("")
				|| objHistoclinRemisiones.getId().getRemicioncod() == null
				|| objHistoclinRemisiones.getId().getRemicioncod().equals("")) {
			throw new GeneralException(
					"error.HistoriasClinicas.datosEspecificos.HistoclinRemisiones.modificar.pkNull");
		} 
		this.validaCampos(objHistoclinRemisiones,false);
	}

	public void validaCampos(HistoclinRemisiones objHistoclinRemisiones, boolean validarExistenciaDato) throws GeneralException{
		//Validamos campos requeridos u Obligatorios
		String campos = "", campos3 = "", campos5 = "";
		

		if (objHistoclinRemisiones.getTiporemision() == null
				|| "".equals(objHistoclinRemisiones.getTiporemision() )){
					campos = campos + "CpHistoclinRemisiones.tipoRemision;";
		}

		if (objHistoclinRemisiones.getFchremicod() == null
				|| "".equals(objHistoclinRemisiones.getFchremicod() )){
					campos = campos + "CpHistoclinRemisiones.fchremicod;";
		}
		
		if(objHistoclinRemisiones.getTiporemision().equals(ConstantesHistoriasClinicas.TIPOREMISION_REFERENCIA) ){

			if (objHistoclinRemisiones.getRefservsoli() == null
					|| "".equals(objHistoclinRemisiones.getRefservsoli() )){
						campos = campos + "CpHistoclinRemisiones.refservsoli;";
			}

			if (objHistoclinRemisiones.getEspecialidadcod() == null
					|| "".equals(objHistoclinRemisiones.getEspecialidadcod() )){
						campos = campos + "CpHistoclinRemisiones.especialidadcod";
			}

		}else if(objHistoclinRemisiones.getTiporemision().equals(ConstantesHistoriasClinicas.TIPOREMISION_CONTRAREFERENCIA)){
			
			if (objHistoclinRemisiones.getCntrefnropersonamedico() == null
					|| "".equals(objHistoclinRemisiones.getCntrefnropersonamedico() )){
						campos = campos + "CpHistoclinRemisiones.cntrefnropersonamedico;";
			}

			if (objHistoclinRemisiones.getCntrefservsoli() == null
					|| "".equals(objHistoclinRemisiones.getCntrefservsoli() )){
						campos = campos + "CpHistoclinRemisiones.cntrefservsoli";
			}	

		}
		
		if (!"".equals(campos)){
			throw new GeneralException("error.HistoriasClinicas.datosEspecificos.HistoclinRemisiones.campos_obligatorios",campos);
		}
		

		
		if(objHistoclinRemisiones.getFchremicod() == null
				|| "".equals(objHistoclinRemisiones.getFchremicod()) ){
			
		}else{
							
			if(ObtenerFecha.fechaMenor(objHistoclinRemisiones.getFchremicod(),
					objHistoclinRemisiones.getHistoclinicas().getFchingreso())){
				campos3 = campos3 + "CpHistoclinRemisiones.fchremicod";
				throw new GeneralException("error.HistoriasClinicas.datosEspecificos.HistoclinRemisiones.campos_fchInferiorHCPrincipal",campos3);
			}
			

			if(ObtenerFecha.fecha_Inicio_Mayor_Fin(objHistoclinRemisiones.getFchremicod(),
													ObtenerFecha.ObtenerFechaSistemaYYYYMMDD())
													){
				campos5 = campos5 + "CpHistoclinRemisiones.fchremicod";
				throw new GeneralException("error.HistoriasClinicas.datosEspecificos.HistoclinRemisiones.camposfechamenoractual",campos5);
			}
			
		}
		
	}
	
}
